package aufgabe_04;

import java.util.Iterator;
import java.util.Vector;

//Klasse Bibo
class Bibo {
	private Vector biboRef = new Vector();
	// Ein einziges Objekt als Klassenvariable anlegen
	private static Bibo bibo = new Bibo();

	// Default Konstruktor - kein weiteres Erzeugen zulassen
	public Bibo()// Siehe Aufgabe 4.3
	{

	}
	// Methode getBiboRef() zum Erhalt einer Referenz auf das einzig
	// existente Bibliotheksobjekt
	public static Bibo getBiboRef() {
		return bibo; // Siehe Aufgabe 4.4
	}
	// Methode addDoku()
	public void addDoku(Doku dokuRef) {
		biboRef.add(dokuRef);// Siehe Aufgabe 4.4
	}

	// Methode removeDoku()
	public void removeDoku(Doku dokuRef) {
		biboRef.removeElement(dokuRef); // Siehe Aufgabe 4.4
	}

	// Methode getIndex() - beschafft Index eines Dokuments im Vector
	public int getIndex(Doku dokuRef) {
		return biboRef.indexOf(dokuRef);
	}

	// Methode insertDoku() - Dokument in Vector an Position index einstellen
	public void insertDoku(Doku dokuRef, int index) {
		biboRef.insertElementAt(dokuRef, index); // Siehe Aufgabe 4.4
	}

	// Methode findDoku()
	public Doku findDoku(int DokuIdent) {
		Doku dokument = null;
		int i = 0;
		try {
			// Siehe Aufgabe 4.5
			for (Iterator it = biboRef.iterator(); it.hasNext();) {
				dokument = (Doku) it.next();
				if (dokument.getDokuId() != DokuIdent) {
					dokument = null;
				}
				else{
					break;
				}
			}
			if(dokument == null) System.out.println("Dokument mit Schluessel " + DokuIdent+ " nicht gefunden");
			return dokument;
		} catch (ArrayIndexOutOfBoundsException e) {
			// Siehe Aufgabe 4.5
			System.out.println("Dokument mit Schluessel " + DokuIdent
					+ " nicht gefunden");
			return null;
		}

	}
}